iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 18
0
自我挑戰組

利用30分鐘~想一個前端問題系列 第 18

利用30分鐘~想一個前端問題 Day18-pull

  • 分享至 

  • xImage
  •  

pull

Mutates the original array to filter out the values specified.

Use Array.prototype.filter() and Array.prototype.includes() to pull out the values that are not needed.
Use Array.prototype.length = 0 to mutate the passed in an array by resetting it's length to zero and Array.prototype.push() to re-populate it with only the pulled values.

去除指定的陣列

  1. 用 Array.prototype.filter() 和 Array.prototype.includes()
    清除不需要的值
  2. 用 Array.length = 0 初始化陣列
  3. 再用 Array.push() 放入已過濾的剩餘陣列
const pull = (arr, ...args) => {
  let argState = Array.isArray(args[0]) ? args[0] : args;
  let pulled = arr.filter(v => !argState.includes(v));
  arr.length = 0;
  pulled.forEach(v => arr.push(v));
};
//EXAMPLES
let myArray = ['a', 'b', 'c', 'a', 'b', 'c'];
pull(myArray, 'a', 'c'); // myArray = [ 'b', 'b' ]

分析點

  1. Array.prototype.filter()

陣列 (array) 的 filter() 方法用來根據你指定的測試函數,從一個陣列中篩選出符合條件的元素。


 
 function isBigEnough(element) {
      return element >= 10;
 }
 var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
 
 console.log(filtered);//[ 12, 130, 44 ]
  1. isArray()

isArray() 方法用於判斷是否為陣列,如果對像是陣列返回true,否則返回false。

function myFunction() {
    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    var x = document.getElementById("demo");
    x.innerHTML = Array.isArray(fruits);
}

上一篇
利用30分鐘~想一個前端問題 Day17--show
下一篇
利用30分鐘~想一個前端問題 Day19-arrayToCSV
系列文
利用30分鐘~想一個前端問題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言